package be.kdg.bombermanunlimited.client.network.packet;

/**
 * Audio packets
 * 
 * @author Philip
 * 
 */
public class AudioDataPacket extends Packet {
	private static final int HEADER_SIZE = 1;
	// deze bevatten een id om de server meet aan te duiden
	private byte id;

	/**
	 * Constructor met ruwe data, deze wordt ontvangen vanop de ring
	 * 
	 * @param rawData
	 */
	protected AudioDataPacket(PacketData rawData) {
		super(rawData, true);

		id = this.data.popByte();
	}

	/**
	 * Een constructor om een packet aan te maken, om dan zo door te sturen over
	 * de ring
	 * 
	 * @param data
	 *            de audio data
	 * @param id
	 *            server id
	 */
	public AudioDataPacket(byte[] data, byte id) {
		super(new PacketData(data), false);
		this.id = id;
	}

	public byte getID() {
		return id;
	}

	/**
	 * Geeft de lengte terug. Enkel het audio gedeelte
	 */
	@Override
	public int getDataLength() {
		return data.getDataLength();
	}

	/**
	 * Geeft de totale header lengte terug, inclusief de bovenliggende header
	 */
	public int getTotalHeaderLength() {
		return super.getTotalHeaderLength() + AudioDataPacket.HEADER_SIZE;
	}

	/**
	 * omvormen tot een byte array om over een socket te versturen. Opgelet: dit
	 * "beschadigd" het packet, na dit uit te voeren kan je dit packet niet meer
	 * gebruiken
	 */
	@Override
	protected byte[] convertToByteArray(PacketData data) {
		// System.out.println("[AduioDataPacket] len data: " + getDataLength());
		data.pushFront(id);

		return super.convertToByteArray(data);
	}
	
	@Override
	public byte getType() {
		return Packet.TYPE_AUDIO_DATA;
	}
}
